I. Uwagi dotyczce tworzenia broni.

Program omija pierwsz linijk tekstu. Moesz napisa w niej co tylko ci si podoba, ale ta linijka MUSI znale si w pliku. W przeciwnym
wypadku pojawi si errory, ktrych natury nie przewidz.
Kada bro skada si z 11 podstawowych zmiennych. Opis poniej.
12                <--Prdko pocisku. Dobrze by byo, gdyby bya mniejsza lub rwna 16, wtedy nie bdzie bdw kolzji. 12 to ju sporo.
10                <--Gwne obraenia, zadawane wieom.
0                 <--Czynnik niszczenia terenu. Im wikszy, tym wicej terenu opadnie w punkcie trafienia.
5                 <--Liczba strzaw, ktre wiea odda.
2                 <--Rozrzut broni. 10 to duy rozrzut.
10                <--Szybkostrzelno. 85 = jedna sekunda.
flak88.bmp        <--Nazwa obrazka broni. Obrazek musi znajdowa si w folderze 'weapons\sprites\'.
7                 <--Obszar objty dziaaniem broni. Im wikszy, tym wikszy lej pozostawi po sobie pocisk.
1                 <--Czynnik grawitacji. 1 to normalna grawitacja.
60                <--Dugo ycia pocisku. Po tym czasie pocisk ulegnie autodestrukcji.
1                 <--Czas, jaki pocisk moe przeby pod ziemi. 85 = jedna sekunda.

Po zadeklarowaniu wszystkich zmiennych, ponownie zostawiasz woln linijk, z tych samych wzgldw co wczeniej.

No i najwaniejsze: musisz doda nazw broni do pliku "queue_weapons.txt". Bez tego bro nie zostanie zaadowana do gry.

II. Uwagi dotyczce pisania skryptw do broni.
1. Funkcja add_bullet() zwraca indeks stworzonego pocisku - zapisuje si do zmiennej a.
Dodatkowo nazw broni w argumencie funkcji piszemy w podwjnych cudzysowach ("nazwa broni.wps"). W pojedynczych wywali bd.
Przykad:

a = add_bullet("Tesla - projectile.wps")
a.speed = 14

2. Moliwe identyfikatory skryptw:
-AT SHOT - przy tworzeniu pocisku (przy wystrzale)
-EVERY FRAME - co kad klatk gry
-AT CONTACT - gdy dotknie ziemi (nie zawsze oznacza to, e pocisk zostanie zniszczony, o czym pniej)
-AT DESTROY - przy zniszczeniu pocisku
3. Zmienna "parent" dziaa tylko, gdy pocisk zostanie wystrzelony przez wie. To dlatego, e oznacza ona indeks wiey, ktra wystrzelia
pocisk. Przykad:
parent.hp += 30
Nie zmieniaj wartoci zmiennej "parent", dla Twojego bezpieczestwa.
4. Zawsze kocz skrypt linijk "endscript". Inaczej plik si nie wczyta, gra si zawiesi, a Ty bdziesz mia kopot.
5. Komentarze midzy skryptami poprzedzasz znakiem "@".Nie mona pisa komentarzy w linijkach "endscript" i w identyfikatorach skryptw.
Oraz w samym kodzie (jest czony w jedn linijk). Jeli zachowasz te zasady, bdw nie uwiadczysz.

Przykad dobrze napisanego skryptu:

@skrypt zwalniania pocisku
EVERY FRAME
if(speed > 0) speed -= 0.2
endscript

@skrypt teleportacji w miejsce trafienia
@wieyczki maj wsprzdne podzielne przez 16, pociski ju nie, wic trzeba je zaokrgli
AT DESTROY
if(height-external_call(GetCell,x div 16,y div 16) < 1) { parent.x = (x div 16)*16
parent.y = (y div 16)*16 }
endscript

6. Midzy identyfikatorami skryptw a linijk "endscript" mona napisa dowolny kod kompatybilny z GM-em 7.0 (bez komentarzy w kodzie).
Jest tylko kilka wyjtkw, a mianowicie nie mona wpisa trzech sw do gry: "keyboard", "mouse", "joystick". Na wypadek, gdyby
komu si zachciao zrobi darmowego Game Makera Pro.

III. Oprcz zmiennych wbudowanych natywnie do GM-a mona wykorzysta zmienne poniej.
Zmienne wieyczki (poprzedzane sowem "parent."):
-height          <--wysoko wieyczki (od 0 do 255) - nie zmienia, i tak si nie da
-active          <--czy z wieyczki mona strzela
-weapon          <--aktualna bro wieyczki - nie zmienia (chyba e chcesz popsu gr)
-remain          <--liczba strzaw, ktor mona jeszcze odda w pojedynczej serii
-angle           <--kt strzau
-group           <--druyna wieyczki
-hp              <--stan wieyczki
Zmienne pocisku:
-height          <--wysoko pocisku (od 0 do 255)
-time            <--czas od stworzenia pocisku - nie zmienia; czas jest powizany z grawitacj :o
-sped            <--prdko spadania pocisku; odpowiednik "gravity"
-md              <--obraenia zadawane wieyczkom
-dd              <--czynnik niszczenia terenu
-ar              <--obszar objty dziaaniem pocisku
-life            <--dugo ycia; 85 = jedna sekunda
-factor          <--czynnik grawitacji; 1 = normalna grawitacja
-ds              <--czas moliwy do przebycia pod ziemi (tak jakby wiercenie); 85 = jedna sekunda
-parent          <--"rodzic" pocisku; tylko gdy wystrzelony
-weap            <--bro, ktra wystrzelia ten pocisk; nie wiem, po co mi to, ale chyba jest wane; nie zmienia
-cont            <--czy pocisk mia kontakt z ziemi
-group           <--druyna pocisku; wane, aby nie trafia swoich
-a               <--zmienna tymczasowa; o tym za chwil

IV. Oprcz funkcji wbudowanych natywnie do GM-a mona wykorzysta trzy dodatkowe funkcje:
-external_call(GetCell,x,y)      <--funkcja z DLL-a; pobiera wysoko komrki na pozycji (x*16,y*16), wic dany obiekt (np. parent) 
znajduje si w komrce (obiekt.x div 16, obiekt.y div 16)
-external_call(SetCell,x,y,v)    <--funkcja z DLL-a; zapisuje wysoko v do komrki na pozycji (x*16,y*16)
-add_bullet(bro)                <--funkcja tworzy pocisk wykorzystujc dane z broni o nazwie "bro" (np. "Standard gun.wps"). Funkcja
zwraca warto, ktr zapisuje si do zmiennej "a". Przykad:

@"a" jest teraz numerem ID nowego pocisku
AT_DESTROY
a = add_bullet("Flamethrower - spark.wps")
a.direction = -direction-20+random(40)
endscript

-sound_play(nazwa_pliku)         <--teraz ta funkcja bierze za argument nazw pliku dwikowego, a nie indeks dwiku. Nazwa dwiku musi
znajdowa si w pliku "queue_sounds.txt", a dwik w folderze "sounds"